iT邦幫忙

2026 iThome 鐵人賽

DAY 7
0
AI Engineering

[ opencode ] 開源 AI coding agent系列 第 7

07-opencode | /undo 與 /redo:放心讓 AI 動手的安全網

  • 分享至 

  • xImage
  •  

! 本篇文章將會介紹 /undo 與 /redo,有安全網你才敢讓 AI 盡情發揮,錯了就讀檔重來 :D

TL;DR: https://dev.benben.me/slides/s/ironman-07-undo-redo

本篇目標

讀完這篇你會學到:

  • /undo 的完整機制(退的不只是檔案)
  • /redo 與連續 undo
  • 一個重要的底層真相:它跟 Git 的深厚關係

情境:AI 把 code 改壞了

你請 AI 重構一支 API:

幫我重構 @src/api/index.ts 裡的程式碼

它豪邁地改了三個檔案,跑完你一看:慘了,邏輯整個歪掉。怎麼辦?

傳統做法:git checkout . 挽救,然後祈禱。opencode 的做法:/undo(或 ctrl+x u)。

/undo 退的是「一整組」東西

/undo 做三件事:

  1. 移除你最近一條訊息
  2. 移除 AI 的所有後續回應
  3. 還原這期間的所有檔案變更

然後你的原始訊息會重新出現在輸入框——擺明了要你改寫 prompt 再戰一次

這就是「嘗試 → 不滿意 → 重來」的循環:改壞了不用手動救檔案,退一步、把需求講得更清楚、再衝一次。嘗試成本大幅降低,你就敢讓 AI 大膽動手。

/undo 可以連按多次,一路退回更早的狀態——就像遊戲裡的 quick save / quick load,死掉就讀上一個存檔。

/redo:反悔你的反悔

/undo 之後發現「欸剛剛其實改得不錯」?/redoctrl+x r)幫你救回來,檔案變更也會一併恢復。注意它只在用過 /undo 之後才有效——沒退過就沒得重做,很合理。

底層真相:它是 Git 做的

一個很多人踩過的坑:/undo 底層靠 Git 管理檔案變更,你的專案必須是 Git repository,如果不是的,記得先在該資料夾 git init

不是 git repo 的資料夾(例如隨手開的 sandbox),/undo 的檔案還原就不會正常運作。opencode 的 snapshot 機制預設開啟,用內部的 git 系統追蹤每次變更——所以大改動之前,你其實已經有兩層保險:opencode 的 snapshot,加上你自己的 git commit 習慣。

小小測驗:/undogit reset 有什麼不同?
想一想再往下看——/undosession 內的時間旅行:退訊息、退回應、退檔案,一次打包。git resetrepo 層的版本控制,不管你的對話。兩者互不取代,搭配服用。

與 git 的分工

情境 用什麼
AI 這輪改壞了,想重寫 prompt 再來 /undo
想回到更早幾輪的狀態 連按 /undo
已經 commit 了想退版 git(git revert / git reset
大重構前的保險 先自己 git commit 一版

筆者習慣:讓 AI 動大刀之前先 commit 一次。snapshot 保險歸保險,自己的 commit 最踏實。

常見問題 / 踩坑記錄

  • Q:/undo 會動到我已經 commit 的東西嗎?
    A:/undo 管的是 session 內的變更,已 commit 的版本交給 git 本身管理。
  • Q:超大 repo 的專案,snapshot 會不會變慢?
    A:會。官方文件提到大 repo 或多 submodule 的專案,snapshot 索引可能變慢、吃磁碟。真的遇到,可以在 config 把 snapshot 關掉——但代價是失去 UI 內的 rollback,三思。
  • Q:為什麼我的 /undo 沒反應?
    A:第一嫌疑犯:這個資料夾不是 git repo。

小結

  • /undo 三合一:退訊息、退回應、退檔案,可連按;/redo 救回反悔
  • 底層是 Git——專案必須是 git repo
  • 安全網讓你敢放手嘗試:嘗試成本 ↓ = 迭代速度 ↑

明日預告

Day 08:個人化設定——主題、keybinds 與兩個設定檔的正確分工。


參考資料:


有任何疑問但沒有 iT 邦幫忙帳號,或是想匿名提問?
歡迎到 https://dev.benben.me/q/P3C5U6 提問或加油打氣,沒意外的話會在完賽之後一起回答 :D


上一篇
06-opencode | 上下文提供技巧:@ 引用、圖片與 prompt 心法
下一篇
08-opencode | 個人化你的 TUI:themes、keybinds 與 config
系列文
[ opencode ] 開源 AI coding agent8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言